﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SMSManage
{
    public partial class frmManageStudent : Form
    {

        /// <summary>
        /// Constructor
        /// </summary>
        public frmManageStudent()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Form loaded
        /// </summary>
        private void frmManageStudent_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'student.tbl_Student_Select_All' table. You can move, or remove it, as needed.
            this.tbl_Student_Select_AllTableAdapter.Fill_tbl_Student_Select_All(this.student.tbl_Student_Select_All);
            BindData();
        }

        /// <summary>
        /// Bind du lieu ban dau
        /// </summary>
        private void BindData()
        {
             //This line of code loads data into the 'student.tbl_Student_Select_All' table. You can move, or remove it, as needed.
            this.tbl_Student_Select_AllTableAdapter.Fill_tbl_Student_Select_All(this.student.tbl_Student_Select_All);

            //Coded by Tuan

            //Set default selected item for fields
            this.cbb_Status.SelectedItem = "Kích hoạt";
            this.txt_ID.Text = String.Empty;
            this.txt_RollNo.Text = String.Empty;
            this.txt_Name.Text = String.Empty;
            this.txt_Tel.Text = String.Empty;
            this.txt_Address.Text = String.Empty;
            this.txt_Desc.Text = String.Empty;
            this.dtpk_BirthDay.Value = DateTime.Now;
            this.lstbClass.DataSource = null;
            this.lstbParent.DataSource = null;

            //Enable ID textfield
            this.txt_ID.Enabled = true;

            //Disable, enable buttons
            this.btnAdd.Enabled = true;
            this.btnSearch.Enabled = true;
            this.btnUpdate.Enabled = false;
            this.btnDel.Enabled = false;
        }

        /// <summary>
        /// Bind du lieu xong
        /// </summary>
        private void dtgrvStd_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            //Coded by Tuan
            for (int i = 0; i < this.dtgrvStd.Rows.Count; i++)
            {
                try
                {
                    this.dtgrvStd.Rows[i].Cells["TT"].Value = (i + 1).ToString(); //Thu tu
                    this.dtgrvStd.Rows[i].Cells["StudentClass"].Value = "...";
                    this.dtgrvStd.Rows[i].Cells["Parent"].Value = "...";
                }
                catch (Exception exc)
                {
                    exc.ToString();
                }
            }
            this.dtgrvStd.Refresh();
        }

        /// <summary>
        /// Hiện dữ liệu lên form
        /// </summary>
        private void dtgrvStd_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.RowIndex > -1)
                {
                    //Enable buttons
                    this.btnUpdate.Enabled = true;
                    this.btnDel.Enabled = true;

                    //disable buttons
                    this.btnAdd.Enabled = false;
                    this.btnSearch.Enabled = false;
                    int StudentID = Convert.ToInt32(this.dtgrvStd.Rows[e.RowIndex].Cells["StudentID"].Value);

                    //Disable ID text field
                    this.txt_ID.Enabled = false;

                    this.txt_ID.Text = StudentID.ToString();
                    this.txt_RollNo.Text = this.dtgrvStd.Rows[e.RowIndex].Cells["StudentRollNumber"].Value.ToString();
                    this.txt_Name.Text = this.dtgrvStd.Rows[e.RowIndex].Cells["StudentName"].Value.ToString();
                    this.txt_Tel.Text = this.dtgrvStd.Rows[e.RowIndex].Cells["StudentTel"].Value.ToString();
                    this.txt_Address.Text = this.dtgrvStd.Rows[e.RowIndex].Cells["StudentAddress"].Value.ToString();
                    this.txt_Desc.Text = this.dtgrvStd.Rows[e.RowIndex].Cells["StudentDescription"].Value.ToString();
                    this.dtpk_BirthDay.Value = Convert.ToDateTime(this.dtgrvStd.Rows[e.RowIndex].Cells["StudentBirthDay"].Value);

                    //change selected value in combobox
                    switch (this.dtgrvStd.Rows[e.RowIndex].Cells["StudentStatus"].Value.ToString())
                    {
                        case "1":
                            this.cbb_Status.SelectedItem = "Kích hoạt";
                            break;
                        case "0":
                            this.cbb_Status.SelectedItem = "Khóa";
                            break;
                        default:
                            this.cbb_Status.SelectedItem = "Kích hoạt";
                            break;
                    }

                    //List student's class
                    DatasetXSD.ClassTableAdapters.tbl_ClassTableAdapter dpClass =
                        new DatasetXSD.ClassTableAdapters.tbl_ClassTableAdapter();
                    this.lstbClass.DataSource = dpClass.Get_tbl_Class_Select_All_By_Student_ID(StudentID);
                    this.lstbClass.DisplayMember = "ClassName";
                    this.lstbClass.ValueMember = "ClassID";

                    //List student's parent
                    DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter dpParent =
                        new DatasetXSD.ParentTableAdapters.tbl_ParentTableAdapter();
                    this.lstbParent.DataSource = dpParent.Get_tbl_Parent_Select_All_By_StudentID(StudentID);
                    this.lstbParent.DisplayMember = "ParentName";
                    this.lstbParent.ValueMember = "ParentID";
                }
    
            }
            catch(Exception exc)
            {
                exc.ToString();
            }
        }

        /// <summary>
        /// Xóa học viên
        /// </summary>
        private void btnDel_Click(object sender, EventArgs e)
        {
            try
            {
                int StudentID = Convert.ToInt32(this.txt_ID.Text.ToString());
                DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter dp =
                    new DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter();
                if(MessageBox.Show("Bạn có thực sự muốn xóa học viên này?", "Xác nhận", 
                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    int ok = dp.tbl_Student_Delete_By_StudentID(StudentID);
                    //Nếu có nhiều hơn 0 bản ghi được xóa
                    if (ok > 0)
                    {
                        MessageBox.Show("Xóa thành công", "Thành công", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        BindData();
                        this.dtgrvStd.Refresh();
                    }
                    else
                    {
                        MessageBox.Show("Xóa thất bại", "Thất bại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch(Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, xóa thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        /// <summary>
        /// Cập nhật thông tin học viên
        /// </summary>
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter dpStudent =
                    new DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter();
                int status = 0;

                switch (this.cbb_Status.SelectedItem.ToString())
                { 
                    case "Kích hoạt":
                        status = 1;
                        break;
                    case "Khóa":
                        status = 0;
                        break;
                    default:
                        status = 1;
                        break;
                }
                if (MessageBox.Show("Bạn có thực sự muốn cập nhật học viên này?", "Xác nhận",
                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    int ok = dpStudent.tbl_Student_Update_All_By_Student_ID(
                                    this.txt_RollNo.Text.Trim(),
                                    this.txt_Name.Text.Trim(),
                                    this.txt_Address.Text.Trim(),
                                    this.txt_Tel.Text.Trim(),
                                    Convert.ToDateTime(this.dtpk_BirthDay.Value),
                                    this.txt_Desc.Text.Trim(),
                                    status,
                                    Convert.ToInt32(this.txt_ID.Text.Trim()));
                    //Nếu có hơn 0 bản ghi được cập nhật
                    if (ok > 0)
                    {
                        MessageBox.Show("Cập nhật thành công", "Thành công", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        BindData();
                        this.dtgrvStd.Refresh();
                    }
                    else
                    {
                        MessageBox.Show("Cập nhật thất bại", "Thất bại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }

            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, cập nhật thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        /// <summary>
        /// Thêm mới học viên
        /// </summary>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.txt_Name.Text.Trim() != String.Empty
                    && this.txt_RollNo.Text.Trim() != String.Empty
                    && this.txt_Tel.Text.Trim() != String.Empty)
                {
                    if (MessageBox.Show("Bạn có thực sự muốn thêm mới học viên này?", "Xác nhận",
                        MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter dp
                            = new DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter();
                        int status = 0;
                        switch (this.cbb_Status.SelectedItem.ToString())
                        {
                            case "Kích hoạt":
                                status = 1;
                                break;
                            case "Khóa":
                                status = 0;
                                break;
                            default:
                                status = 1;
                                break;
                        }
                        int ok = dp.tbl_Student_Insert_All(
                                    this.txt_RollNo.Text.Trim(),
                                    this.txt_Name.Text.Trim(),
                                    this.txt_Tel.Text.Trim(),
                                    this.txt_Address.Text.Trim(),
                                    Convert.ToDateTime(this.dtpk_BirthDay.Value),
                                    this.txt_Desc.Text.Trim(),
                                    status);
                        if (ok > 0)
                        {
                            //Báo thành công
                            MessageBox.Show("Thêm mới thành công", "Thành công", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            BindData();
                            this.dtgrvStd.Refresh();
                        }
                        else
                        {
                            //Báo thất bại
                            MessageBox.Show("Thêm mới thất bại", "Thất bại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }

                    }
                }
                else
                {
                    MessageBox.Show("Bạn vui lòng nhập tên học viên, số điện thoại, roll number", "Nhập lại", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, thêm mới thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        /// <summary>
        /// Tìm kiếm học viên
        /// </summary>
        private void btnSearch_Click(object sender, EventArgs e)
        {
            try
            {
                string status = String.Empty;
                switch (this.cbb_Status.SelectedItem.ToString())
                {
                    case "Kích hoạt":
                        status = "1";
                        break;
                    case "Khóa":
                        status = "0";
                        break;
                    default:
                        status = String.Empty;
                        break;
                }

                DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter dp =
                    new DatasetXSD.StudentTableAdapters.tbl_Student_Select_AllTableAdapter();

                this.dtgrvStd.DataSource = dp.Get_tbl_Student_Search_By_All(
                    this.txt_ID.Text.Trim(),
                    this.txt_RollNo.Text.Trim(),
                    this.txt_Name.Text.Trim(),
                    this.txt_Tel.Text.Trim(),
                    this.txt_Address.Text.Trim(),
                    status,
                    this.txt_Desc.Text.Trim());
                this.dtgrvStd.Refresh();
                
            }
            catch (Exception exc)
            {
                exc.ToString();
                MessageBox.Show("Có lỗi xảy ra, tìm kiếm thất bại", "Có lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        /// <summary>
        /// Link quảng lý lớp được click
        /// </summary>
        private void lnkManageClass_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (this.txt_ID.Text.Trim() != String.Empty)
            {
                frmPopUpClassStudent popUpClassStudent = new frmPopUpClassStudent();
                //popUpClassStudent.MdiParent = this.MdiParent;
                popUpClassStudent.StudentID = Convert.ToInt32(this.txt_ID.Text.Trim());
                popUpClassStudent.ShowDialog();
            }
        }

        /// <summary>
        /// Link quản lý phụ huynh được click
        /// </summary>
        private void lnkManageParent_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (this.txt_ID.Text.Trim() != String.Empty)
            {
                frmPopUpParentStudent popUpParentStudent = new frmPopUpParentStudent();
                //popUpParentStudent.MdiParent = this.MdiParent;
                popUpParentStudent.StudentID = Convert.ToInt32(this.txt_ID.Text.Trim());
                popUpParentStudent.ShowDialog();
            }
        }

        /// <summary>
        /// Thoát
        /// </summary>
        private void btn_Close_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
    }
}
